package com.kb.design.service;

import com.kb.design.entity.CustomUser;
import com.kb.design.entity.DesignDept;
import com.kb.design.vo.DesignDeptVO;

import java.util.List;

/**
 * @Auther:chenzx
 * @Date:2024-04-01
 * @Description:
 */
public interface DeptService {
    List<DesignDeptVO> selectDeptList(DesignDept dept);
    List<DesignDept> queryArea();
    List<DesignDept> getDeptById(DesignDept dept);
    List<DesignDept> querySecondaryDept();
    List<DesignDept> queryDepartmentScreening(DesignDept dept);
    List<DesignDeptVO> queryDailyDepartment(DesignDept dept);
    void insertDept(DesignDept dept);
    List<DesignDept> isDeptLeader(String userCode);
    /**
     * 根据父部门ID查询下级部门数量
     *
     * @param parentId 父部门ID
     * @return 结果
     */
    public long selectDeptCount(Long parentId);
    /**
     * 删除部门管理信息
     *
     * @param deptId 部门ID
     * @return 结果
     */
    public long deleteDeptById(Long deptId);
    /**
     * 校验部门名称是否唯一
     *
     * @param dept 部门信息
     * @return 结果
     */
    public boolean checkDeptNameUnique(DesignDept dept);
    /**
     * 根据ID查询所有子部门（正常状态）
     *
     * @param deptId 部门ID
     * @return 子部门数
     */
    public int selectNormalChildrenDeptById(Long deptId);
    /**
     * 修改保存部门信息
     *
     * @param dept 部门信息
     * @return 结果
     */
    public int updateDept(DesignDept dept);

    public List<DesignDept> queryLeader(String code);
    List<DesignDept> queryAllDept(Long deptId);

    /**
     * 根据传入部门 查询此部门和下所有的子部门的用户
     * @param deptId
     * @return
     */
    List<CustomUser> queryUserByDept(Long deptId);

    /**
     * 查询部门是否存在用户
     *
     * @param deptId 部门ID
     * @return 结果 true 存在 false 不存在
     */
    public boolean checkDeptExistUser(Long deptId);
    public DesignDept selectDeptById(Long deptId);
    public Integer selectUsersPinByDeptAndChildren(Long deptId);

}
